package com.hehao.java_basic.proxy.jdk.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @author Damon
 * @date 2022/10/20
 * 完成静态代理中的的功能  1.调用目标类方法  2。实现功能增强
 */
public class MyDynamicUsbSellHandler implements InvocationHandler {

    /**
     * 目标类对象(要创建代理类的对象)
     */
    private Object target;


    public MyDynamicUsbSellHandler(Object target) {
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Object result = null;
        System.out.println("动态代理类执行的方法名："+method.getName());

        //1.调用目标类中方法
        //float price = usbKingstonFactory.usbSell(amount);
        result = method.invoke(target, args);
        //2.方法增强
        if (null!=result) {
            result = (float)result * 2;
            System.out.println("动态代理handler发放优惠券！");
        }
        return result;
    }
}
